#ifndef DSPNASM_SYMBOLTABLE_H
#define DSPNASM_SYMBOLTABLE_H

#include <memory>
#include <unordered_map>
#include "nasm/symbol/symbol.h"
#include "nasm/elf/elfFile.h"
namespace dspnasm{
    class SymbolTable {
    private:
        std::unordered_map<std::string, std::shared_ptr<Symbol>> m_symbolTable;
    public:
        SymbolTable() = default;

        ~SymbolTable() = default;

        void addSymbol(std::shared_ptr<Symbol> symbol);

        bool existSymbol(const std::string &symbolName);

        void exportSymbols(std::shared_ptr<ElfFile> elfFile);

        void printSymbol() const;

        std::shared_ptr<Symbol> getSymbol(const std::string &symbolName);
    };

}
#endif //DSPNASM_SYMBOLTABLE_H
